/*******************************************************************************
 * Course :					LOG210
 * Session :				winter 2012
 * Group :					02
 * Team :					3
 * Project :				Iteration 01
 * Students :				Nicolas Lefebvre			LEFN06078909
 * 							Jean-Philippe Chapdelaine	CHAJ13099001
 * 							Dalin Son					SOND05099000
 * 							Philippe Nichols			NICP29109007
 * Teacher :				François Caron
 * 							Jean-Philippe Martin
 * Created :				Jan 25, 2012
 * Date dern. modif. :		see revesion history
 * 
 * =============================================================
 *	Revision history
 * =============================================================
 *	Jan 25, 2012	Class created
*******************************************************************************/
package model;

public class Compte 
{
	private String prenom = "";
	private String nom = "";
	private Coordonee coordonee = new Coordonee();
	private String username = "";
	private String password = "";
	
	public String getPrenom() {
		return prenom;
	}
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	public Coordonee getCoordonee() {
		return coordonee;
	}
	public void setCoordonee(Coordonee coordonee) {
		this.coordonee = coordonee;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	protected String getPassword()
	{
		return this.password;
	}

	public Compte() { }
	
	public Compte(String prenom, String nom, Coordonee coordonee, String username, String password)
	{
		this();
		this.prenom = prenom;
		this.nom = nom;
		this.coordonee = coordonee;
		this.username = username;
		this.password = password;
	}
	
	/**
	 * Permet de changer le password
	 * @param oldPass l'ancien mot de passe de l'utilisateur
	 * @param newPass le nouveau mot de passe de l'utilisateur
	 * @return true si le password a bien ete change
	 */
	public boolean changePassword(String oldPass, String newPass)
	{
		boolean passChanged = false;
		
		//on change le password s'il est vide ou si le mot de passe envoye est correct et que le nouveau n'est pas vide
		if ((this.password.equals(oldPass) || this.password.isEmpty()) && !newPass.isEmpty())
		{
			this.password = newPass;
			passChanged = true;
		}
		return passChanged;
	}
	
	/**
	 * Verifie le password est valide
	 * @param password a verifier
	 * @return true si le password est valide
	 */
	public boolean verifyPassword(String password)
	{
		return this.password.equals(password);
	}
	
	/**
	 * Permet de se connecter a un compte
	 * @return le compte qui est relié au unsername/password
	 */
	public Compte connection()
	{
		Compte c = null;
		if(!this.username.isEmpty() && !this.password.isEmpty())
		{
			if(this.username.equals("client") && this.verifyPassword("client"))
			{
				c = new Client(this);
			}
			else if(this.username.equals("livreur") && this.verifyPassword("livreur"))
			{
				c = new Livreur(this);
			}
			else if(this.username.equals("restaurateur") && this.verifyPassword("restaurateur"))
			{
				c = new Restaurateur(this);
			}
			else if(this.username.equals("entrepreneur") && this.verifyPassword("entrepreneur"))
			{
				c = new Entrepreneur(this);
			}
		}
		return c;
	}
	
	public String toString()
	{
		return this.nom + ", " + this.prenom;
	}
}